package com.shixianjun;
import com.shixianjun.tools.Tools;

/**
 * 有序数组中的数值为x轴上的点，给一段长度为length的绳子 如果将绳子放在x轴上 最多能覆盖几个点
 * 绳子两端盖住的点 也有效
 * */
public class 绳子覆盖点数 {
    public static void main(String[] args) {
        int[] arr = Tools.randomIntArray(4, 5, true, true);
        Tools.printIntArray("arr", arr);
        int length = 1;

        System.out.print("最多覆盖点数：" + maxPoint(arr, length));
    }

    /**
     * 通过快慢指针解决
     * 如果两个指针中的值相减大于等于绳子的长度 记录当前点数 快指针前进
     * 如果两个指针中的值相减大于绳子的长度了 则慢指针前进
     * */
    public static int maxPoint(int[] arr, int length) {
        int ans = 0;
        int left = 0;
        int right = 0;

        for (; left < arr.length; left++) {
            int max = 0;
            for (; right < arr.length && ((arr[right] - arr[left]) <= length); right++) {
                max = right - left + 1;
            }
            ans = Math.max(ans, max);
        }

        return ans;
    }
}
